package com.zw.a.basic.a06.demo13_exercise;

//测试类: 动物类案例_多态版
public class AnimalTest {
    public static void main(String[] args) {
        //1. 通过多态的方式测试 狗类的空参对象.
        //1.1 创建对象.
        Animal an1 = new Dog();
        //1.2 设置属性
        an1.setName("杜宾犬");
        an1.setAge(13);
        //1.3 打印属性
        System.out.println(an1.getName() + "..." + an1.getAge());
        //1.4 调用方法
        an1.eat();

        //1.5 调用狗类的独有的方法, 需要向下转型, 因为多态的弊端是: 父类引用不能直接使用子类的特有成员.
        Dog d1 = (Dog)an1;
        d1.lookHome();
        System.out.println("---------------------------");

        //2. 通过多态的方式测试 狗类的全参对象.
        //2.1 创建对象, 并设置属性
        Animal an2 = new Dog("拉布拉多犬", 9);
        //2.2 打印属性
        System.out.println(an2.getName() + "..." + an2.getAge());
        //2.3 调用方法
        an2.eat();
        //2.4 调用狗类的独有的方法.
        Dog d2 = (Dog)an2;
        d2.lookHome();






        /*
           1. 通过多态的方式测试 狗类的空参对象.
           1.1 创建对象.
           1.2 设置属性
           1.3 打印属性
           1.4 调用方法
           1.5 调用狗类的独有的方法.

           2. 通过多态的方式测试 狗类的全参对象.
           2.1 创建对象, 并设置属性
           2.2 打印属性
           2.3 调用方法
           2.4 调用狗类的独有的方法.
         */
        //3. 通过多态的方式测试 猫类的空参对象, 自己写.
        //4. 通过多态的方式测试 猫类的全参对象, 自己写.
    }
}
